Subject: Correct version 0.12 DLSW (7 of 8)

From: "Alan K. Bartky, Manager of Technology" <[email-masked]>
Date: Fri, 19 Aug 94 18:07:46 PDT

----------
X-Sun-Data-Type: text
X-Sun-Data-Description: text
X-Sun-Data-Name: text
X-Sun-Content-Lines: 1
X-Sun-Content-Length: 33

Here is the correct part 7 of 8

----------
X-Sun-Data-Type: default
X-Sun-Data-Description: default
X-Sun-Data-Name: dlsw7.txt
X-Sun-Content-Lines: 631
X-Sun-Content-Length: 24018


RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.2.12. HALT_PENDING State

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive HALT_DL_NOACK|                     | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DL_HALTED        | Send DL_HALTED      | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            | Send DL_HALTED      | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+
      | XPORT_FAILURE        | DLC_HALT_DL         | HALT_PENDING_NOACK   |
      +----------------------+---------------------+----------------------+

   The HALT_PENDING state is entered upon the receipt of a HALT_DL message.  This
   causes the local DLC to issue a DISC command.  Upon the receipt of the UA
   response (DLC_DL_HALTED), a DL_HALTED message is returned to the remote DLSw and
   the DISCONNECTED state is entered.

7.2.13. HALT_PENDING_NOACK State

      +----------------------+---------------------+----------------------+
      |        Event         |      Action(s)      |      Next State      |
      +----------------------+---------------------+----------------------+
      | Receive DATAFRAME    | DLC_DGRM            |                      |
      +----------------------+---------------------+----------------------+
      | DLC_DL_HALTED        |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | DLC_ERROR            |                     | DISCONNECTED         |
      +----------------------+---------------------+----------------------+
      | DLC_DGRM             | Send DATAFRAME      |                      |
      +----------------------+---------------------+----------------------+

AIW DLSw Related Interest Group                                  [Page 57]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

7.3. NetBIOS Datagrams

   The NetBIOS protocols use a number of UI frames for directory services and the
   transmission of datagrams.  Most of these frames are directed to a group MAC
   address (GA) with the routing information field indicating spanning tree
   explorer (STE).  Two of the frames, NB_Add_Name_Response and NB_Status_Response,
   are directed to a specific MAC address with the routing information field
   indicating a specifically routed frame (SRF).  The handling of these frames is
   summarized in the following table.

   +---------------------------+------------------+--------------------+
   |          Event            |     Action(s)    |      Comment       |
   +---------------------------+------------------+--------------------+
   | DLC_DGRM for NETBIOS      | Send NETBIOS_ANQ | Transmitted to all |
   |  group address:           |                  |   remote DLSw       |
   |   NB_Add_Name_Query       |                  |                    |
   +---------------------------+------------------+--------------------+
   | DLC_DGRM for a specific   | Send NETBIOS_ANR | Transmitted to     |
   |  address:                 |                  |   specific DLSw     |
   |   NB_Add_Name_Response    |                  |                    |
   +---------------------------+------------------+--------------------+
   | DLC_DGRM for a specific   | Send DATAFRAME   | Transmitted to all |
   |  address:                 |                  |   remote DLSw       |
   |   NB_Status_Response      |                  |                    |
   +---------------------------+------------------+--------------------+
   | DLC_DGRM for NETBIOS      | Send DATAFRAME   | Transmitted to all |
   |  group address:           |                  |   remote DLSw       |
   |   NB_Name_in_Conflict     |                  |                    |
   |   NB_Add_Group_Name_Query |                  |                    |
   |   NB_Datagram,            |                  |                    |
   |   NB_Datagram_Broadcast   |                  |                    |
   |   NB_Status_Query         |                  |                    |
   |   NB_Terminate_Trace      |                  |                    |
   +---------------------------+------------------+--------------------+

                      Table 5.  NetBIOS DLC Frames

   The above actions do not apply in the following states: CIRCUIT_ESTABLISHED,
   CONTACT_PENDING, CONNECT_PENDING, CONNECTED, and CIRCUIT_PENDING.  The handling
   of the remaining two UI frames used by NetBIOS systems, NB_Name_Query and
   NB_Name_Recognized, are documented as part of the DLSw state machine in the
   previous section (i.e., DISCONNECTED and RESOLVE_PENDING states).  Furthermore,
   the handling of NetBIOS datagrams (i.e., NB_Datagram) sent to a specific MAC
   address is also governed by the DLSw state machine.

     Note:  Some implementations also issue Test frames during the exchange of the
     NetBIOS, NB_Name_Query and NB_Name_Recognized.  This exchange of protocol data
     units occurs during the start of a data link and is used to determine the
     routing information.  Most other implementations of NetBIOS will use the
     NB_Name_Query/NB_Name_Recognized exchange to determine routes in conjunction
     with resolving the NetBIOS names.  These differences are not reflected in the
     SSP protocols.

AIW DLSw Related Interest Group                                  [Page 58]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   The handling of the NetBIOS specific SSP messages is given in the following
   table.

   +---------------+-------------------------+-------------------------+
   |     Event     |        Action(s)        |         Comment         |
   +---------------+-------------------------+-------------------------+
   | NETBIOS_ANQ   | DLC_DGRM:               | Routed STE              |
   |               |    NB_Add_Name_Query    | (NETBIOS Group Address) |
   +---------------+-------------------------+-------------------------+
   | NETBIOS_ANR   | DLC_DGRM:               | Routed STE              |
   |               |    NB_Add_Name_Response | (Specific MAC Address)  |
   +---------------+-------------------------+-------------------------+
   | NETBIOS_NQ_ex | DLC_DGRM:               | Routed STE              |
   |               |    NB_Name_Query        | (NETBIOS Group Address) |
   +---------------+-------------------------+-------------------------+
   | NETBIOS_NQ_cs | DLC_DGRM:               | Routed STE              |
   |               |    NB_Name_Query        | (NETBIOS Group Address) |
   +---------------+-------------------------+-------------------------+
   | NETBIOS_NR_ex | DLC_DGRM:               | Routed SRF              |
   |               |    NB_Name_Recognized   | (Specific MAC Address)  |
   +---------------+-------------------------+-------------------------+
   | NETBIOS_NR_cs | DLC_DGRM:               | Routed SRF              |
   |               |    NB_Name_Recognized   | (Specific MAC Address)  |
   +---------------+-------------------------+-------------------------+
   | DATAFRAME     | DLC_DGRM                | Routed STE              |
   |               |                         | (If NB_Status_Response: |
   |               |                         |   Specific MAC Address  |
   |               |                         |  Else:                  |
   |               |                         |   NETBIOS Group Address)|
   +---------------+-------------------------+-------------------------+

                      Table 6.  NetBIOS SSP Messages

   The above actions apply to all DLSw states.  The handling of NetBIOS datagrams
   sent within DGRMFRAME messages is governed by the DLSw state machine.  The
   DGRMFRAME message type is employed instead of the DATAFRAME message type once
   the end-to-end circuit has been established.  At that time, the message is
   addressed according to the pair of Circuit IDs in the message header instead of
   relying upon the MAC address information in the token ring header.

AIW DLSw Related Interest Group                                  [Page 59]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

8. Protocol Flow Diagrams

   The switch-to-switch protocols are used to setup and take down circuits between
   a pair of Data Link Switches.  Once a circuit is established, the end stations
   on the local networks can employ LLC Type 1 (connectionless) protocols.  In
   addition, the end systems can establish an end-to-end connection for support of
   LLC Type 2 (connection oriented) protocols.

   The term, Data Link, is used in this document to refer to both a "logical data
   link" when supporting Type 1 LLC services, and a "data link connection" when
   supporting Type 2 LLC services.  In both cases, the Data Link is identified by
   the Data Link ID defined in section 3.2.

8.1. Connect Protocols

   The two basic bringup flows from a pure FSM perspective are shown below.  The
   first flow is a bringup involving XIDs and the second is one without XIDs.

AIW DLSw Related Interest Group                                  [Page 60]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Flow #1 - DLSw Bringup With XIDs
      ======                            ___                           ======
      |    |        ---------        __/   \__       ---------        |    |
      |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
      ======        |   |   |      <  Network  >     |   |   |        ======
     /______\       ---------       \__     __/      ---------       /______\
      Origin       Origin DLSw         \___/        Target DLSw      Target
      Station        partner                          partner        Station

                   disconnected                    disconnected

                   DLC_RESOLVE_C   CANUREACH_ex
                   ----------->    ----------->

                                     ICANREACH_ex
                                     <-----------

                   DLC_XID         CANUREACH_cs    DLC_START_DL
                   ----------->    ----------->    ----------->
                   circuit_start                   resolve_pending

                                     ICANREACH_cs    DLC_DL_STARTED
                                     <-----------    <-----------
               circuit_established                 circuit_pending
                                   REACH_ACK
                                   ----------->   circuit_established

                                   XIDFRAME        DLC_XID
                                   ----------->    ----------->

                          DLC_XID        XIDFRAME         DLC_XID
                     <-----------    <-----------    <-----------

                   DLC_XID         XIDFRAME        DLC_XID
                   ----------->    ----------->    ----------->

                      DLC_XIDs       XIDFRAMEs        DLC_XIDs
                   <------------>  <------------>  <------------>

                   DLC_CONTACTED   CONTACT         DLC_CONTACT
                   ----------->    ----------->    ----------->
                   connect_pending                 contact_pending

                      DLC_CONTACT       CONTACTED    DLC_CONTACTED
                     <-----------    <-----------    <-----------
                      connected                       connected

                     DLC_INFOs        IFRAMEs        DLC_INFOs
                   <------------>  <------------>  <------------>

AIW DLSw Related Interest Group                                  [Page 61]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Mapping LAN events to the DLC events and actions on Flow #1 produces the
   following flows shown below:

      ======                            ___                           ======
      |    |        ---------        __/   \__       ---------        |    |
      |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
      ======        |   |   |      <  Network  >     |   |   |        ======
     /______\       ---------       \__     __/      ---------       /______\
      Origin       Origin DLSw         \___/        Target DLSw      Target
      Station        partner                          partner        Station

                   disconnected                    disconnected

   TEST_cmd        DLC_RESOLVE_C   CANUREACH_ex                    TEST_cmd
   ----------->    ----------->    ----------->                    ---------->

         TEST_rsp                    ICANREACH_ex                        TEST_rsp
     <-----------                    <-----------                    <-----------

   null XID        DLC_XID         CANUREACH_cs    DLC_START_DL
   ----------->    ----------->    ----------->    ----------->
                   circuit_start                   resolve_pending

                                     ICANREACH_cs    DLC_DL_STARTED
                                     <-----------    <-----------
               circuit_established                 circuit_pending
                                   REACH_ACK
                                   ----------->   circuit_established

                                   XIDFRAME        DLC_XID         null XID
                                   ----------->    ----------->    ---------->

             XID          DLC_XID        XIDFRAME         DLC_XID             XID
     <-----------    <-----------    <-----------    <-----------    <-----------

       XIDs           DLC_XIDs       XIDFRAMEs        DLC_XIDs          XIDs
   <------------>  <------------>  <------------>  <------------>  <------------>

   SABME           DLC_CONTACTED   CONTACT         DLC_CONTACT     SABME
   ----------->    ----------->    ----------->    ----------->    ----------->
                   connect_pending                 contact_pending

               UA     DLC_CONTACT       CONTACTED    DLC_CONTACTED             UA
     <-----------    <-----------    <-----------    <-----------    <-----------
                     connected                        connected

      IFRAMEs        DLC_INFOs        IFRAMEs        DLC_INFOs        IFRAMEs
   <------------>  <------------>  <------------>  <------------>  <------------>

AIW DLSw Related Interest Group                                  [Page 62]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Those implementations that prefer to respond to the SABME immediately could use
   the same events to do that:

   SABME           DLC_CONTACTED   CONTACT         DLC_CONTACT     SABME
   ----------->    ----------->    ----------->    ----------->    ----------->
              UA   connect_pending                 contact_pending
     <-----------
   RR
   ----------->
             RNR
     <-----------

               RR     DLC_CONTACT       CONTACTED    DLC_CONTACTED             UA
     <-----------    <-----------    <-----------    <-----------    <-----------
                     connected                        connected

      IFRAMEs        DLC_INFOs        IFRAMEs        DLC_INFOs        IFRAMEs
   <------------>  <------------>  <------------>  <------------>  <------------>

AIW DLSw Related Interest Group                                  [Page 63]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Flow #2 - DLSw Bringup Without XIDs (circuit setup)

      ======                            ___                           ======
      |    |        ---------        __/   \__       ---------        |    |
      |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
      ======        |   |   |      <  Network  >     |   |   |        ======
     /______\       ---------       \__     __/      ---------       /______\
      Origin       Origin DLSw         \___/        Target DLSw      Target
      Station        partner                          partner        Station

                   disconnected                    disconnected

                   DLC_CONTACTED   CANUREACH_cs    DLC_START_DL
                   ----------->    ----------->    ----------->
                   circuit_start                   resolve_pending

                                     ICANREACH_cs    DLC_DL_STARTED
                                     <-----------    <-----------
               circuit_established                 circuit_pending
                                   REACH_ACK
                                   ----------->   circuit_established

                                   CONTACT         DLC_CONTACT
                                   ----------->    ----------->
                   connect_pending                 contact_pending

                      DLC_CONTACT       CONTACTED    DLC_CONTACTED
                     <-----------    <-----------    <-----------
                      connected                       connected

                     DLC_INFOs        IFRAMEs        DLC_INFOs
                   <------------>  <------------>  <------------>
   -------------------------------------------------------------------------

AIW DLSw Related Interest Group                                  [Page 64]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Mapping LAN events to the DLC events and actions on Flow #2 (and adding a
   NETBIOS_NQ and NETBIOS_NR_ex) produces:

      ======                            ___                           ======
      |    |        ---------        __/   \__       ---------        |    |
      |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
      ======        |   |   |      <  Network  >     |   |   |        ======
     /______\       ---------       \__     __/      ---------       /______\
      Origin       Origin DLSw         \___/        Target DLSw      Target
      Station        partner                          partner        Station

                   disconnected                     disconnected

   NAME_QUERY      DLC_DGRM        NETBIOS_NQ_ex   DLC_DGRM        NAME_QUERY
   ----------->    ----------->    ----------->    ----------->    ----------->

       NAME_RECOG         DLC_DGRM   NETBIOS_NR_ex       DLC_DGRM      NAME_RECOG
     <-----------    <------------   <-----------    <-----------    <-----------

   SABME           DLC_CONTACTED   CANUREACH_cs    DLC_START_DL
   ----------->    ----------->    ----------->    ----------->
                   circuit_start                   resolve_pending

                                     ICANREACH_cs    DLC_DL_STARTED
                                     <-----------    <-----------
               circuit_established                 circuit_pending
                                   REACH_ACK
                                   ----------->   circuit_established

                                   CONTACT         DLC_CONTACT     SABME
                                   ----------->    ----------->    ----------->
                   connect_pending                 contact_pending

               UA     DLC_CONTACT       CONTACTED    DLC_CONTACTED             UA
     <-----------    <-----------    <-----------    <-----------    <-----------
                      connected                       connected

      IFRAMEs        DLC_INFOs        IFRAMEs        DLC_INFOs        IFRAMEs
   <------------>  <------------>  <------------>  <------------>  <------------>

   In keeping with a paradigm of 'DLSw is a big 802.2 LAN', all other DLC types
   (SDLC for now, QLLC, channel, or whatever in the future) would be handled by a
   'DLC transformation layer' that would transform the specific protocol's events
   into the appropriate DLSw DLC events and DLSw DLC actions into the appropriate
   protocol actions.  The XIDs that flow in the SSP XIDFRAME should stay 802.2ish
   (i.e. ABM bit set) and leave it up to the DLC transformation layer to suit the
   XID to its particular DLC type.

AIW DLSw Related Interest Group                                  [Page 65]
RFC XXXX      DLSw: Switch-to-Switch Protocol              August 1994

   Here is an example of a leased SDLC PU 2.0 device as the origin station.  It
   should use Flow #2 since it is not known if the other side is a LAN, a switched
   line or a leased line.

      ======                            ___                           ======
      |    |        ---------        __/   \__       ---------        |    |
      |    |      __|  _|_  |__     /   IP    \    __|  _|_  |__      |    |
      ======        |   |   |      <  Network  >     |   |   |        ======
     /______\       ---------       \__     __/      ---------       /______\
      Origin       Origin DLSw         \___/        Target DLSw      Target
      Station        partner                          partner        Station

                   disconnected                     disconnected

   implementer's   DLC_RESOLVE_C   CANUREACH_ex
   choice (power   ----------->    ----------->
   up, configuration
   change, never,                    ICANREACH_ex
   connect time, etc.)               <-----------

   PU 2.0 is
   configured
   in DLSw to      DLC_XID(null)   CANUREACH_cs    DLC_START_DL
   call in         ----------->    ----------->    ----------->
                   circuit_start                   resolve_pending

                                     ICANREACH_cs    DLC_DL_STARTED
                                     <-----------    <-----------
               circuit_established                 circuit_pending
                                   REACH_ACK
                                   ----------->   circuit_established

                                   XIDFRAME        DLC_XID
                                   ----------->    ----------->

                          DLC_XID        XIDFRAME         DLC_XID
   respond with      <-----------    <-----------    <-----------
   XID configured
   for station or
   forward XID to
   station and
   send response   DLC_XID         XIDFRAME        DLC_XID
                   ----------->    ----------->    ----------->

             SNRM     DLC_CONTACT       CONTACTED    DLC_CONTACTED
     <-----------    <-----------    <-----------    <-----------
                   contact_pending                 connect_pending

AIW DLSw Related Interest Group                                  [Page 66]